<?php
/*
 Settings - load and save global and local settings in the database
 
 Michael Schwarz - 04.12.2010
*/

/**
 \brief Globale Einstellung laden
 
 Laedt eine globale Einstellung und cached diese in der Session, um Datenbankaufrufe einzusparen
 
 \param $name Name der Einstellung
 \param $default Default Wert, falls die Einstellung nicht existiert
 \return Wert der Einstellung, oder falls nicht gefunden, Default-Wert
*/
function get_settings($name, $default = NULL) {
 if(isset($_SESSION["sett_".$name])) return $_SESSION["sett_".$name];

 $qu = db_query("SELECT * FROM settings WHERE CONVERT(SettKey USING utf8) = '".secure_mysql_string($name)."'");
 if(!$qu || mysql_num_rows($qu) == 0) return $default;
 $r = mysql_fetch_array($qu);
 _log(LOG_ACCESS, "Get settings value for '$name'");
 $_SESSION["sett_".$name] = $r["SettValue"];
 return $r["SettValue"];
}

/**
 \brief Globale Einstellung speichern
 
 Speichert eine globale Einstellung und loescht sie aus dem Cache
 
 \param $name Name der Einstellung
 \param $value Wert der Einstellung
*/
function set_settings($name, $value) {
 db_query("DELETE FROM settings WHERE CONVERT(SettKey USING utf8) = '".secure_mysql_string($name)."'");
 db_query("INSERT INTO settings VALUES('".secure_mysql_string($name)."', '".secure_mysql_string($value)."')");
 unset($_SESSION["sett_".$name]);
 _log(LOG_ACCESS, "Set settings value for '$name' to '$value'");
}

/**
 \brief Benutzerspezifische Einstellung laden
 
 Laedt eine benutzerspezifische Einstellung. Falls diese nicht gefunden wird, 
 wird versucht, die globale Einstellung mit dem selbem Namen zu laden. 
 Sollte auch dies scheitern, wird der Default-Wert zurueckgegeben.
 
 \see get_settings()
 \param $name Name der Einstellung
 \param $default Default-Wert
 \return Wert der Einstellung, und wenn nicht gefunden, Default-Wert
*/
function get_settings_user($name, $default = NULL) {
 $def = get_settings($name, $default);

 if(!isset($_SESSION["user"])) {
  return $def; 
 } 
 return get_settings($name."_".md5($_SESSION["user"]), $def);
}


/**
 \brief Benutzerspezifische Einstellung speichern
 
 Speichert eine benutzerspezifische Einstellung.
 
 \see set_settings()
 \param $name Name der Einstellung
 \param $value Wert der Einstellung
*/
function set_settings_user($name, $value) {
 if(!isset($_SESSION["user"])) return -1;
 set_settings($name."_".md5($_SESSION["user"]), $value);
}


?>